home *** CD-ROM | disk | FTP | other *** search
/ Creative Computers / Creative Computers CD-ROM, Volume 1 (Legendary Design Technologies, Inc.)(1994).iso / shareware / fractals / apfelkiste / apfelkiste1.3 / includes / libraries / arpbase.h next >
C/C++ Source or Header  |  1994-11-17  |  48KB  |  1,125 lines

  1. #ifndef    LIBRARIES_ARPBASE_H
  2. #define    LIBRARIES_ARPBASE_H    1
  3.  
  4. /*
  5.  ************************************************************************
  6.  *                                    *
  7.  * 5/3/89    ARPbase.h    by MKSoft from ARPbase.i by SDB        *
  8.  *                                    *
  9.  ************************************************************************
  10.  *                                    *
  11.  *    AmigaDOS Resource Project -- Library Include File        *
  12.  *                     for Lattice C 5.x or Manx C 3.6    *
  13.  *                                    *
  14.  ************************************************************************
  15.  *                                    *
  16.  *    Copyright (c) 1987/1988/1989 by Scott Ballantyne        *
  17.  *                                    *
  18.  *    The arp.library, and related code and files may be freely used    *
  19.  *    by supporters of ARP.  Modules in the arp.library may not be    *
  20.  *    extracted for use in independent code, but you are welcome to    *
  21.  *    provide the arp.library with your work and call on it freely.    *
  22.  *                                    *
  23.  *    You are equally welcome to add new functions, improve the ones    *
  24.  *    within, or suggest additions.                    *
  25.  *                                    *
  26.  *    BCPL programs are not welcome to call on the arp.library.    *
  27.  *    The welcome mat is out to all others.                *
  28.  *                                    *
  29.  ************************************************************************
  30.  *                                    *
  31.  * N O T E !  You MUST! have IoErr() defined as LONG to use LastTracker *
  32.  *          If your compiler has other defines for this, you may wish *
  33.  *          to remove the prototype for IoErr() from this file.    *
  34.  *                                    *
  35.  ************************************************************************
  36.  */
  37.  
  38. /*
  39.  ************************************************************************
  40.  *    First we need to include the Amiga Standard Include files...    *
  41.  ************************************************************************
  42.  */
  43. #ifndef    EXEC_TYPES_H
  44. #include    <EXEC/Types.h>
  45. #endif    EXEC_TYPES_H
  46.  
  47. #ifndef    EXEC_LISTS_H
  48. #include    <EXEC/Lists.h>
  49. #endif    EXEC_LISTS_H
  50.  
  51. #ifndef    EXEC_ALERTS_H
  52. #include    <EXEC/Alerts.h>
  53. #endif    EXEC_ALERTS_H
  54.  
  55. #ifndef    EXEC_LIBRARIES_H
  56. #include    <EXEC/Libraries.h>
  57. #endif    EXEC_LIBRARIES_H
  58.  
  59. #ifndef    EXEC_SEMAPHORES_H
  60. #include    <EXEC/Semaphores.h>
  61. #endif    EXEC_SEMAPHORES_H
  62.  
  63. #ifndef    LIBRARIES_DOS_H
  64. #include    <Libraries/DOS.h>
  65. #endif    LIBRARIES_DOS_H
  66.  
  67. /*
  68.  ************************************************************************
  69.  *    Check for MANX/Lattice and define the differences...        *
  70.  ************************************************************************
  71.  *    At the moment MANX 3.6 does not have prototypes or the        *
  72.  *    wonderful #pragma statements of Lattice 5.0...            *
  73.  *    And, no __stdargs in MANX either...                *
  74.  ************************************************************************
  75.  */
  76. #ifdef    AZTEC_C
  77.  
  78. #define    NO_PRAGMAS    1
  79. #define    NO_PROTOTYPES    1
  80. #define    C_Args
  81.  
  82. #endif    AZTEC_C
  83.  
  84. #ifdef    LATTICE
  85.  
  86. #define    C_Args        __stdargs
  87.  
  88. #endif    LATTICE
  89.  
  90. /*
  91.  ************************************************************************
  92.  *    Standard definitions for arp library information        *
  93.  ************************************************************************
  94.  */
  95. #define    ArpName        "arp.library"    /* Name of library... */
  96. #define    ArpVersion    39L        /* Current version... */
  97.  
  98. /*
  99.  ************************************************************************
  100.  *    The current ARP library node...                    *
  101.  ************************************************************************
  102.  */
  103. struct    ArpBase    {
  104.     struct    Library            LibNode;     /* Standard library node        */
  105.         APTR            DosRootNode;     /* Copy of dl_Root            */
  106.         UBYTE            Flags;         /* See bitdefs below            */
  107.         UBYTE            ESCChar;      /* Character to be used for escaping    */
  108.         LONG            ArpReserved1;     /* ArpLib's use only!!            */
  109.     struct    Library            *EnvBase;      /* Dummy library for MANX compatibility*/
  110.     struct    Library            *DosBase;      /* Cached DosBase            */
  111.     struct    Library            *GfxBase;      /* Cached GfxBase            */
  112.     struct    Library            *IntuiBase;     /* Cached IntuitionBase        */
  113.     struct    MinList            ResLists;     /* Resource trackers            */
  114.     struct    ResidentProgramNode    *ResidentPrgList;/* Resident Programs.            */
  115.     struct    SignalSemaphore        ResPrgProtection;/* protection for above        */
  116.         BPTR            SegList;      /* Pointer to loaded libcode (a BPTR).    */
  117.         };
  118.  
  119. /*
  120.  ************************************************************************
  121.  *    The following is here *ONLY* for information and for        *
  122.  *    compatibility with MANX.  DO NOT use in new code!        *
  123.  ************************************************************************
  124.  */
  125. #ifdef    ARP_PRIVATE
  126. struct EnvBase {
  127.     struct    Library    LibNode;    /* Standard library node for linkage    */
  128.         BYTE    *EnvSpace;    /* Access only when Forbidden!        */
  129.         ULONG    EnvSize;    /* Total allocated mem for EnvSpace    */
  130.     struct    ArpBase    *ArpBase;    /* Added in V32 for Resource Tracking    */
  131.         };
  132. #endif    ARP_PRIVATE
  133.  
  134. /*
  135.  ************************************************************************
  136.  *    These are used in release 33.4 but not by the library code.    *
  137.  *    Instead, individual programs check for these flags.        *
  138.  ************************************************************************
  139.  */
  140. #define    ARPB_WILD_WORLD 0L        ; Mixed BCPL/Normal wildcards.
  141. #define    ARPB_WILD_BCPL  1L        ; Pure BCPL wildcards.
  142.  
  143. #define    ARPF_WILD_WORLD (1L << ARPB_WILD_WORLD)
  144. #define    ARPF_WILD_BCPL  (1L << ARPB_WILD_BCPL)
  145.  
  146. /*
  147.  ************************************************************************
  148.  * The alert object is what you use if you really must return an alert    *
  149.  * to the user. You would normally OR this with another alert number    *
  150.  * from the alerts.h file. Generally, should be NON deadend alerts.    *
  151.  *                                    *
  152.  * For example, if you can't open ArpLibrary:                *
  153.  *    Alert( (AG_OpenLib|AO_ArpLib), 0L);                *
  154.  ************************************************************************
  155.  */
  156. #define    AO_ArpLib    0x00008036L        /* Alert object */
  157.  
  158. /*
  159.  ************************************************************************
  160.  *    Alerts that arp.library may return...                *
  161.  ************************************************************************
  162.  */
  163. #define    AN_ArpLib    0x03600000L    /* Alert number                */
  164. #define    AN_ArpNoMem    0x03610000L    /* No more memory            */
  165. #define    AN_ArpInputMem    0x03610002L    /* No memory for input buffer        */
  166. #define    AN_ArpNoMakeEnv    0x83610003L    /* No memory to make EnvLib        */
  167.  
  168. #define    AN_ArpNoDOS    0x83630001L    /* Can't open dos.library        */
  169. #define    AN_ArpNoGfx    0x83630002L    /* Can't open graphics.library        */
  170. #define    AN_ArpNoIntuit    0x83630003L    /* Can't open intuition            */
  171. #define    AN_BadPackBlues    0x83640000L    /* Bad packet returned to SendPacket()    */
  172. #define    AN_Zombie    0x83600003L    /* Zombie roaming around system        */
  173.  
  174. #define    AN_ArpScattered    0x83600002L    /* Scatter loading not allowed for arp    */
  175.  
  176.  
  177. /*
  178.  ************************************************************************
  179.  *    Return codes you can get from calling ARP Assign()...        *
  180.  ************************************************************************
  181.  */
  182. #define    ASSIGN_OK    0L    /* Everything is cool and groovey            */
  183. #define    ASSIGN_NODEV    1L    /* "Physical" is not valid for assignment        */
  184. #define    ASSIGN_FATAL    2L    /* Something really icky happened            */
  185. #define    ASSIGN_CANCEL    3L    /* Tried to cancel something but it won't cancel    */
  186.  
  187. /*
  188.  ************************************************************************
  189.  *    Size of buffer you need if you are going to call ReadLine()    *
  190.  ************************************************************************
  191.  */
  192. #define    MaxInputBuf    256L
  193.  
  194. /*
  195.  ************************************************************************
  196.  *    The ARP file requester data structure...            *
  197.  ************************************************************************
  198.  */
  199. struct FileRequester    {
  200.             BYTE    *fr_Hail;        /* Hailing text            */
  201.             BYTE    *fr_File;        /* Filename array (FCHARS + 1)    */
  202.             BYTE    *fr_Dir;        /* Directory array (DSIZE + 1)    */
  203.         struct    Window    *fr_Window;        /* Window requesting or NULL    */
  204.             UBYTE    fr_FuncFlags;        /* Set bitdef's below        */
  205.             UBYTE    fr_Flags2;        /* New flags...            */
  206.             VOID    (*fr_Function)();    /* Your function, see bitdef's    */
  207.             WORD    fr_LeftEdge;        /* To be used later...        */
  208.             WORD    fr_TopEdge;
  209.             };
  210.  
  211. /*
  212.  ************************************************************************
  213.  * The following are the defines for fr_FuncFlags.  These bits tell    *
  214.  * FileRequest() what your fr_UserFunc is expecting, and what        *
  215.  * FileRequest() should call it for.                    *
  216.  *                                    *
  217.  * You are called like so:                        *
  218.  * fr_Function(Mask,